/*
 * 
 *  Este arquivo é parte do software TODO Calculadora. TODO Calculadora é um software livre;
 *  você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU
 *  como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença,
 *  ou (na sua opnião) qualquer versão.
 *  
 *	Este programa é distribuido na esperança que possa ser útil, mas SEM NENHUMA GARANTIA;
 *  sem uma garantia implícita de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
 *  Veja a Licença Pública Geral GNU para maiores detalhes. Você deve ter recebido uma cópia
 *  da Licença Pública Geral GNU junto com este programa, se não, escreva para a Fundação do
 *	Software Livre(FSF)
 *
 *	Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
package principal;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 * <p>
 * Classe utilizada para validar o campo JTextField da calculadora.
 * </p>
 *
 * @author Willyan Guimarães Caetano
 */
public class TextDocument extends PlainDocument {

    private int tamanhoMaximo = 12;

    public TextDocument() {
        super();
    }

    public TextDocument(int tamanho) {
        super();
        tamanhoMaximo = tamanho;
    }

    /**
     * Executa validação que impede campos não desejados em determinada
     * {@link JTextField}
     *
     * @param offs
     * @param string
     * @param attributeSet
     * @throws BadLocationException
     */
    @Override
    public void insertString(int offs, String string, AttributeSet attributeSet)
            throws BadLocationException {
        if (string == null) {
            return;
        }

        String oldString = getText(0, getLength());
        String newString = oldString.substring(0, offs) + string
                + oldString.substring(offs);

        if (newString.length() > tamanhoMaximo) {
            super.insertString(offs, "", attributeSet);

        } else {
            super.insertString(offs, string, attributeSet);
        }

    }

}
